﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using elr_tracking_bal.ART;
using elr_tracking_bal;
using System.Data;
using System.Collections;


namespace elr_tracking_wpf
{
    /// <summary>
    /// Lógica de interacción para Agregar_Articulo.xaml
    /// </summary>
    public partial class Agregar_Articulo : Window
    {
        public ObservableCollection<VisibleArticulo> obs;
        public ObservableCollection<ListaITEM> obsData2;

        pom pom;

        public Agregar_Articulo(ObservableCollection<VisibleArticulo> obs, pom ventana)
        {
            InitializeComponent();
            this.obs = obs;
            this.comboArticulos.ItemsSource = obs;

            List<String> moneda = GetCombos.GetMoneda();
            this.comboMoneda.ItemsSource = moneda ;
            this.comboMoneda.SelectedIndex = moneda.IndexOf("Peso mexicano"); 



            pom = ventana;
            obsData2 = new ObservableCollection<ListaITEM>();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                
                int selectedvalue = comboArticulos.SelectedIndex;
                VisibleArticulo articulo = obs[selectedvalue];
                try
                {
                    float cantidad = (float)(Convert.ToDouble(txtCantidad.Text.ToString()));
                    float costoU = (float)(Convert.ToDouble(txtCostoUnitario.Text.ToString()));
                    float IVA = (float)(Convert.ToDouble(txtIVA.Text.ToString()));
                    float Descuento = (float)(Convert.ToDouble(txtDescuento.Text.ToString()));
                    float TC = (float)(Convert.ToDouble(txtTC.Text.ToString()));

                    IVA = IVA /= 100;
                    Descuento /= 100;

                    if (cantidad <= 0)
                    {
                        MessageBox.Show("La ","Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }

                    if (costoU <= 0)
                    {
                        MessageBox.Show("La cantidad de artículos debe ser al menos de 1", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }

                    if(txtIVA.ToString().Equals(""))
                    {
                        MessageBox.Show("No se ha ingresado el valor del IVA", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }

                    if (txtTC.ToString().Equals(""))
                    {
                        MessageBox.Show("No se ha ingresado el valor del TC", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                                        
                    articulo.CANTIDAD = cantidad;
                    articulo.COSTOU = costoU;
                    articulo.DESCUENTO = Descuento;
                    articulo.IVA = IVA;

                    Moneda mm = new Moneda();
                    DataTable dt = new DataTable();
                    dt = GetCombos.GetMonedaC(comboMoneda.SelectedValue.ToString());
                    mm.MONEDA = dt.Rows[0][0].ToString();
                    mm.ID_MONEDA = Int32.Parse(dt.Rows[0][1].ToString());
                    articulo.MONEDA = mm;

                    pom.articulos_dg.Add(articulo);

                    //For para el segundo grid
                    //pom.articulos_dg2.Clear();
                    for(int i = 0; i < (int)cantidad; i++){
                        
                        //ListaITEM Li = new ListaITEM(articulo.ARTICULO, "", "", false, 0, articulo.ID_ARTICULO);
                        ListaITEM Li = new ListaITEM();

                        Li.Serie = "";
                        Li.Sku = "";
                        Li.Is_Arrendado = false;
                        Li.Costo_Final = (costoU * (1 - IVA + Descuento));
                        Li.ID_Item = 1;
                        Li.ID_Track = 1;
                        //Li.ID_Lot_Art = 1;
                        Li.ID_Articulo = articulo.ID_ARTICULO;
                        
                        Li.Nombre_Articulo = articulo.ARTICULO;

                        Li.Cantidad = articulo.CANTIDAD;
                        Li.costoU = articulo.COSTOU;
                        Li.IVA = articulo.IVA;
                        Li.ID_Moneda = articulo.MONEDA.ID_MONEDA;
                        Li.Moneda = articulo.MONEDA.MONEDA;
                        Li.descuento = articulo.DESCUENTO;
                        Li.TC = TC;
                        Li.ID_Item = 1;

                        pom.articulos_dg2_total.Add(Li);
                    }

                    pom.obs.RemoveAt(selectedvalue);
                    this.Close();
                }
                catch (Exception ex)
                {
                   
                    MessageBox.Show("La cantidad debe de ser un número entero.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("No hay más artículos para seleccionar.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            return;
        }

        private void txtTC_TextChanged(object sender, TextChangedEventArgs e)
        {

        }
    }
}
